<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

</body>
<script>
    // 1、foreach循环
    // 遍历数组中的每一项。没有返回值，对原数组没有影响，不支持IE
    arr.forEach((value, index, array) => {
        // 参数一是: 数组元素
        // 参数二是: 数组元素的索引
        // 参数三是：当前的数组
    })


    // 2.filter 数组过滤
    // filter() 方法创建一个新的数组，新数组中的元素是通过检查指定数组中符合条件的所有元素，主要用于筛选数组。
    // 注意：它不会改变原始数组，但是直接返回一个新数组。
    let arr = [12, 66, 4, 88, 3, 7];
    let res = arr.filter((value, index, array) => {
        // 参数一是:数组元素
        // 参数二是:数组元素的索引
        // 参数三是：当前的数组
        return value >= 20;
    });
    console.log(res); // [66,88] 返回值是一个新数组


    // 3.map 循环
    // map的回调函数中支持return返回值，相当于把数组中的每一项改变，但并不影响原来的数组，只是相当于把原数组克隆一份，把克隆的这一份的数组中的对应项改变了
    let arr1 = [12, 23, 24, 42, 1];
    let res1 = arr1.map((item, index, arr) => {
        return item * 10;
    })
    console.log(res1); // [120,230,240,420,10];  原数组拷贝了一份，并进行了修改
    console.log(arr1); // [12,23,24,42,1]；  原数组并未发生变化


    var arr11 = [1, 2, 3, 4, 5, 6]
    arr22 = arr11.map((item, index) => {      //item值   index下标   array数组
        console.log(item);//分别输出1,2,3,4,5,6
        console.log(index);//分别输出0,1,2,3,4,5
        return item * item
    })
    console.log(arr22);//[1,4,9,16,25,36]

    // 4、some循环
    // some() 是查找数组中是否有满足条件的元素，返回值是布尔值，如果查找到这个元素，就返回 true(有任意一项符合条件即返回true) , 如果查找不到就返回 false。
    // 如果查询数组中唯一的元素，用 some 方法更合适，在 some 里面遇到 return true 就是终止遍历，迭代效率更高。
    let arr111 = [10, 30, 4];
    let flag = arr111.some((value, index, array) => {
        return value < 3;
    });
    console.log(flag); // false 返回值是布尔值，只要查找到满足条件的一个元素就立马终止循环

    // 5.every 循环
    // every()是对数组中的每一项运行给定函数，只有当该函数对每一项返回true，才返回true，否则返回false。
    let arr222 = [1, 2, 3, 4, 5, 6];
    let flag1 = arr.every((value, index, array) => {
        return value > 3;
    });
    console.log(flag); // false

    // 6.for of 循环
    // for-of 循环是ES6新增特性，for-of 的功能不仅仅用于遍历数组，它还可以 遍历字符串、遍历类数组对象、支持 Map 和 Set 对象遍历
    let arr333 = [1, 2, 3, 4];
    for (let item in arr333) {
        console.log(item) // 遍历每个元素 1 2 3 4
    }




</script>

</html>